#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2024/12/11 20:15
# @Author  : 唐松
# @File    : csv_handler.py
# @Software: PyCharm

import ast
import csv
from configs.setting import get_object_path
from util_tools.logger_util import logs


def read_csv_file(csv_path, check_str=None):
    """读取csv文件, 并检查是否包含特定字符串"""
    # 初始化一个空列表, 用于存储CSV文件的每一行数据
    csv_data_list = []
    try:
        with open(get_object_path() + "/" + csv_path, encoding="utf-8") as f:
            # 使用csv模块的reader对象读取文件内容
            csv_data = csv.reader(f)
            # 遍历每一行数据
            for row in csv_data:
                # 处理每一行中可能存在的字典字符串表示
                processed_row = []
                for item in row:
                    try:
                        # 尝试将字符串表示的字典转换回字典对象
                        dict_item = ast.literal_eval(item)
                        if isinstance(dict_item, dict):
                            processed_row.append(dict_item)
                        else:
                            processed_row.append(item)
                    except (ValueError, SyntaxError):
                        # 如果转换失败或者不是字典字符串, 则保留原始项
                        processed_row.append(item)
                # 将处理后的行数据添加到csv_data_list列表中
                csv_data_list.append(processed_row)

                # 如果指定了要检查的字符串, 那么在这里进行检查
                if check_str and check_str in str(processed_row):
                    logs.info(f"找到包含'{check_str}'的行:  {processed_row}")
                    # 根据需要可以在这里进行其他处理

        # 返回存储所有行数据的列表
        return csv_data_list
    except Exception as e:
        logs.error(f"读取CSV文件失败, 原因:  {e}")


if __name__ == '__main__':
    print(read_csv_file('data/wx_tag_login.csv'))


